package com.ssy.lingxi.purchase.api.dto.request.bidding;

import com.ssy.lingxi.purchase.api.dto.request.EnclosureUrlsRequest;
import com.ssy.lingxi.purchase.api.dto.request.purchase.DemandMemberRequest;
import com.ssy.lingxi.purchase.api.dto.response.CountryAreaResponse;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
*添加采购竞价单请求实体
* @author wrc
* @date 2021/1/20
*/
@Data
public class BiddingAddRequest {

    /**
     * 竞价单摘要
     */
    @NotBlank(message = "竞价单摘要不能为空")
    private String details;

    /**
     * 竞价开始时间
     */
    @NotNull(message = "竞价开始时间不能为空")
    private Long biddingStartTime;

    /**
     * 竞价结束时间
     */
    @NotNull(message = "竞价结束时间不能为空")
    private Long biddingEndTime;

    /**
     *是否使用地市：1-是，0-否
     */
    @NotNull(message = "是否使用地市不能为空")
    private Integer isAreas;

    /**
     * 适用地市
     */
    @NotEmpty(message = "适用地市不能为空")
    private List<CountryAreaResponse> areas;

    /**
     *添加采购物料方式：1.选择货品生成 2.导入货品生成
     */
    @NotNull(message = "添加采购物料方式不能为空")
    private  Integer materielMode;

    /**
     * 采购竞价单物料信息列表
     */
    @Valid
    @NotEmpty(message = "物料信息列表不能为空")
    private List<BiddingProductRequest> materiels;

    /**
     *起拍价
     */
    private Double startingPrice;

    /**
     *是否有起拍价：1.是 0.否
     */
    @NotNull(message = "是否有起拍价不能为空")
    private Integer isStartingPrice;

    /**
     *目标价
     */
    private Double targetPrice;

    /**
     *是否有目标价：1.是 0.否
     */
    @NotNull(message = "是否有目标价不能为空")
    private Integer isTargetPrice;

    /**
     *最小价差
     */
    private Double minPrice;

    /**
     *是否有最小价差：1.是 0.否
     */
    @NotNull(message = "是否有最小价差不能为空")
    private Integer isMinPrice;

    /**
     *允许报价次数
     */
    @NotNull(message = "允许报价次数不能为空")
    private Integer allowPurchaseCount;

    /**
     *公开当前最低报价 1.是 0.否
     */
    @NotNull(message = "公开当前最低报价不能为空")
    private Integer isOpenPurchase;

    /**
     *公开报价排名 1.是 0.否
     */
    @NotNull(message = "公开报价排名不能为空")
    private Integer isOpenRanking;

    /**
     *报名要求时间开始
     */
    @NotNull(message = "报名要求时间开始不能为空")
    private Long startSignUp;

    /**
     *报名要求时间结束
     */
    @NotNull(message = "报名要求时间结束不能为空")
    private Long endSignUp;

    /**
     *报名要求
     */
    private String demand;

    /**
     * 报名要求附件
     */
    @Valid
    private List<EnclosureUrlsRequest> demandUrls;

    /**
     *交付日期
     */
    @NotNull(message = "交付日期不能为空")
    private Long deliver;

    /**
     *交付地址
     */
    @NotBlank(message = "交付地址不能为空")
    private String address;

    /**
     *交付地址Id
     */
    @NotNull(message = "交付地址Id不能为空")
    private Long addressId;

    /**
     *报价要求
     */
    private String offer;

    /**
     *付款方式
     */
    private String paymentType;

    /**
     * 税费要求
     */
    private String taxes;

    /**
     *物流要求
     */
    private String logistics;

    /**
     *包装要求
     */
    private String packRequire;

    /**
     *其他要求
     */
    private String otherRequire;

    /**
     * 交易条件附件
     */
    @Valid
    private List<EnclosureUrlsRequest> urls;

    /**
     *需求对接类型：1.发布至平台 2.系统匹配 3.邀请
     */
    @NotNull(message = "需求对接类型不能为空")
    private Integer type;

    /**
     * 发布竞价 绑定的商城Id
     */
    private List<Long> shopIds;

    /**
     * 发布竞价的商城类型
     * 1.企业商城与 6采购门户
     */
    @NotNull(message = "发布竞价的商城类型不能为空")
    private Integer shopType;

    /**
     * 需求对接会员列表
     */
    @Valid
    private List<DemandMemberRequest> demandMembers;
}
